home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1997 December / PC Pro December 1997 CD-Rom coverdisc.iso / symantec / dbAnywh / JAVA.BIN / CLASSES.ZIP / sun / tools / tree / Context.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-14  |  3.0 KB  |  145 lines

  1. package sun.tools.tree;
  2.  
  3. import sun.tools.java.AmbiguousField;
  4. import sun.tools.java.ClassNotFound;
  5. import sun.tools.java.Constants;
  6. import sun.tools.java.Environment;
  7. import sun.tools.java.FieldDefinition;
  8. import sun.tools.java.Identifier;
  9.  
  10. public class Context implements Constants {
  11.    Context prev;
  12.    Node node;
  13.    int varNumber;
  14.    LocalField locals;
  15.    FieldDefinition field;
  16.  
  17.    public Context(FieldDefinition var1) {
  18.       this.field = var1;
  19.    }
  20.  
  21.    Context(Context var1, Node var2) {
  22.       this.prev = var1;
  23.       this.node = var2;
  24.       this.locals = var1.locals;
  25.       this.varNumber = var1.varNumber;
  26.       this.field = var1.field;
  27.    }
  28.  
  29.    public int declare(Environment var1, LocalField var2) {
  30.       ((FieldDefinition)var2).subModifiers(16);
  31.       ((FieldDefinition)var2).setValue((Node)null);
  32.       var2.prev = this.locals;
  33.       this.locals = var2;
  34.       var2.number = this.varNumber;
  35.       this.varNumber += ((FieldDefinition)var2).getType().stackSize();
  36.       return var2.number;
  37.    }
  38.  
  39.    LocalField getLocalField(Identifier var1) {
  40.       for(LocalField var2 = this.locals; var2 != null; var2 = var2.prev) {
  41.          if (var1.equals(((FieldDefinition)var2).getName())) {
  42.             return var2;
  43.          }
  44.       }
  45.  
  46.       return null;
  47.    }
  48.  
  49.    FieldDefinition getField(Environment var1, Identifier var2) throws AmbiguousField, ClassNotFound {
  50.       Object var3 = this.getLocalField(var2);
  51.       if (var3 == null) {
  52.          var3 = this.field.getClassDefinition().getVariable(var1, var2);
  53.       }
  54.  
  55.       return (FieldDefinition)var3;
  56.    }
  57.  
  58.    Context getLabelContext(Identifier var1) {
  59.       for(Context var2 = this; var2 != null; var2 = var2.prev) {
  60.          if (var2.node != null && var2.node instanceof Statement && ((Statement)var2.node).hasLabel(var1)) {
  61.             return var2;
  62.          }
  63.       }
  64.  
  65.       return null;
  66.    }
  67.  
  68.    Context getBreakContext(Identifier var1) {
  69.       if (var1 != null) {
  70.          return this.getLabelContext(var1);
  71.       } else {
  72.          for(Context var2 = this; var2 != null; var2 = var2.prev) {
  73.             if (var2.node != null) {
  74.                switch (var2.node.op) {
  75.                   case 92:
  76.                   case 93:
  77.                   case 94:
  78.                   case 95:
  79.                      return var2;
  80.                }
  81.             }
  82.          }
  83.  
  84.          return null;
  85.       }
  86.    }
  87.  
  88.    Context getContinueContext(Identifier var1) {
  89.       if (var1 != null) {
  90.          return this.getLabelContext(var1);
  91.       } else {
  92.          for(Context var2 = this; var2 != null; var2 = var2.prev) {
  93.             if (var2.node != null) {
  94.                switch (var2.node.op) {
  95.                   case 92:
  96.                   case 93:
  97.                   case 94:
  98.                      return var2;
  99.                }
  100.             }
  101.          }
  102.  
  103.          return null;
  104.       }
  105.    }
  106.  
  107.    Context getInlineContext() {
  108.       for(Context var1 = this; var1 != null; var1 = var1.prev) {
  109.          if (var1.node != null) {
  110.             switch (var1.node.op) {
  111.                case 150:
  112.                case 151:
  113.                   return var1;
  114.             }
  115.          }
  116.       }
  117.  
  118.       return null;
  119.    }
  120.  
  121.    Context getInlineFieldContext(FieldDefinition var1) {
  122.       for(Context var2 = this; var2 != null; var2 = var2.prev) {
  123.          if (var2.node != null) {
  124.             switch (var2.node.op) {
  125.                case 150:
  126.                   if (((InlineMethodExpression)var2.node).field.equals(var1)) {
  127.                      return var2;
  128.                   }
  129.                   break;
  130.                case 151:
  131.                   if (((InlineNewInstanceExpression)var2.node).field.equals(var1)) {
  132.                      return var2;
  133.                   }
  134.             }
  135.          }
  136.       }
  137.  
  138.       return null;
  139.    }
  140.  
  141.    long removeAdditionalVars(long var1) {
  142.       return var1 & ((1L << this.varNumber) - 1L | 1L << 63);
  143.    }
  144. }
  145.